/*
 * @(#)FileSystemTreeModel.java 9/12/2005
 *
 * Copyright 2002 - 2005 JIDE Software Inc. All rights reserved.
 */
package com.element.plaf.basic;

import com.element.ui.others.FolderChooser;

import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreePath;

class BasicFileSystemTreeModel extends DefaultTreeModel {
	private FileSystemView _fileSystemView;

	public BasicFileSystemTreeModel(FolderChooser folderChooser) {
		super(new MyComputerTreeNode(folderChooser));
	}

	public FileSystemView getFileSystemView() {
		if (_fileSystemView == null) {
			_fileSystemView = FileSystemView.getFileSystemView();
		}
		return _fileSystemView;
	}

	@Override
	public Object getChild(Object parent, int index) {
		if (parent instanceof DefaultMutableTreeNode) {
			return ((DefaultMutableTreeNode) parent).getChildAt(index);
		} else {
			return null;
		}
	}

	public void removePath(TreePath path, int index, Object deletedObject) {
		TreePath parentPath = path.getParentPath();
		Object source = parentPath.getLastPathComponent();
		Object[] paths = parentPath.getPath();
		if (((LazyMutableTreeNode) source).isLoaded()) {
			((DefaultMutableTreeNode) source).remove((MutableTreeNode) deletedObject);
		}
		fireTreeNodesRemoved(
				source,
				paths,
				new int[]{index},
				new Object[]{deletedObject});
	}

	public void addPath(TreePath parent, int insertionIndex, Object insertedObject) {
//        TreePath parentPath = parent;
//        Object source = parentPath.getLastPathComponent();
//        if (((LazyMutableTreeNode) source).isLoaded()) {
//            ((DefaultMutableTreeNode) source).insert((MutableTreeNode) insertedObject, insertionIndex);
//        }
		fireTreeNodesInserted(parent.getLastPathComponent(),
				parent.getPath(),
				new int[]{insertionIndex},
				new Object[]{insertedObject});
	}
}
